Модуль:Gamebox
local getArgs = require('Module:Arguments').getArgs local getGames = require('Module:Gamedata') local p = {} local function makeInvokeFunction(funcName) -- makes a function that can be returned from #invoke, using -- Module:Arguments. return function (frame) local args = getArgs(frame, {parentOnly = true}) return pfuncName(args) end end local stylet = '\n|-\n|style="font-size:100%; text-align:center;background:#222;" colspan=2|' local function cate(catename,sort) if not mw.title.getCurrentTitle():inNamespace('') then return '' end if sort then sort = '|' .. sort else sort = '' end return 'Category:' .. catename .. sort .. '' end local t = { 'image'={'image'}, 'image_width'={'image_width',default='240px'}, 'image_bg'={'image_bg'}, 'japan'={'japan'}, 'romaji'={'romaji'}, 'Разработчик'={'developer'}, 'Издатель'={'publisher'}, 'Жанр'={'genre'}, 'Платформа'={'platform(s)','platform'}, 'Japan'={'release-date-japan','releasej'}, United States'={'release-date-north-america','releasena'}, 'Europe' ={'release-date-europe','releaseeu'}, 'Australia'={'release-date-australasia','releaseau'}, 'cname'={'name',default=mw.title.getCurrentTitle().text}, -- Character's name известен, как'={'aka'}, 'Катакана'={'japan','kana'}, 'Ромадзи'={'romaji'}, 'rpname'={'RPname','rpname',h='Revelations Name'}, появление'={'first appearance','first'}, 'Affiliation'={'affiliation'}, 'Alignment'={'alignment'}, 'Команда'={'team'}, -- Strange Journey 'Occupation'={'job','occupation'}, 'Ранг'={'rank'}, -- Strange Journey 'Корабль'={'ship'}, -- Strange Journey 'Страна'={'country'}, -- Strange Journey 'Соображение'={'reason'}, -- Nocturne Sponsor'={'demonic sponsor','sponsor'}, -- Nocturne 'Origin'={'origin'}, 'Оружие'={'weapon'}, Partner'={'demonpartner'}, -- Devil Child 'Племя'={'tribe'}, -- DDSaga оружие'={'gun'}, Аватар'={'avatar'}, -- DDSaga Atma Avatar Клеймо'={'brand'}, -- DDSaga Atma brand Клейма'={'location'}, -- DDSaga Atma brand location Рождения'={'birthday','dob'}, 'Возраст'={'age'}, 'Зодиак'={'zodiac'}, 'Рост'={'height'}, 'Вес'={'weight'}, Color'={'comp'}, -- Devil Survivor 1 character's COMP color Phone Color'={'cell'}, -- Devil Survivor 2 character's cel phone color 'Residency'={'home'}, Demon'={'fatedemon'}, -- Demon fusions unlocked by raising Devil Survivor 2 character's Fate rank Demon'={'animedemon'}, -- Allied demons summoned in Devil Survivor 2 anime Крови'={'blood','blood type'}, Weapon'={'melee'}, Weapon'={'ranged'}, 'Аркана'={'arcana'}, -- Persona series 2'={'arcana2',h='Вторичная Аркана'}, -- Persona 1 and 2 'Персона'={'persona'}, -- Character's signature Persona(s) 'Class'={'class'}, -- SMTxFE Partner'={'miragepartner'}, -- SMTxFE 'Theme'={'theme','song'}, -- Character's theme music 'Сейю'={'japaneseva','Japanese VA'}, дублёр'={'englishva','English VA'}, } local game_stat_order1 = { 'Раработчик', 'Издатель', 'Жанр', 'Платформа', } local game_stat_order2 = { 'Japan', 'the United States', 'Europe', 'Australia', } local char_stat_order = { 'Также известен, как', 'Катакана', 'Ромадзи', 'rpname', 'Первое появление', 'Affiliation', 'Alignment', 'Команда', 'Occupation', 'Ранг', 'Корабль', 'Страна', 'Соображение', 'Demonic Sponsor', 'Origin', 'Оружие', 'Demon Partner', 'Племя', 'Огнестрельное оружие', 'Атма Аватар', 'Атма Клеймо', 'Расположение Клейма', 'Дата Рождения', 'Возраст', 'Зодиак', 'Рост', 'Вес', 'COMP Color', 'Cell Phone Color', 'Residency', 'Fate Demon', 'Anime Demon', 'Группа Крови', 'Melee Weapon', 'Ranged Weapon', 'Аркана', 'Аркана 2', 'Персона', 'Class', 'Mirage Partner', 'Theme', 'Сейю', 'Английский дублёр', } local function get_prop(args) local prop = {} for k, v in pairs(t) do for _, name in ipairs(v) do if argsname then propk = argsname break end end propk = propk or v.default end return prop end p.game = makeInvokeFunction('_game') function p._game(args) local prop = get_prop(args) local game = args1 or args.class or args.game or args.Game or '' local gameg -- Game general style if getGames.gamesgame.fallback then gameg = getGames.gamesgame.fallback -- e.g. 'p3f' and 'p3p' will fall back to 'p3' if applicable. else gameg = game end local gamen = getGames.gamesgame.name -- Full game name local gamegn = getGames.gamesgameg.name -- e.g. 'Persona 3 FES' will fall back to 'Persona 3' if applicable. if not prop.image_bg then prop.image_bg = '#333' end local styleg = '\n|-\n!style="background: ' .. getGames.gamesgameg.colorbg .. ';color: ' .. getGames.gamesgameg.font .. '"' local styleh = styleg .. '|' local stylec = styleg .. ' colspan=2|' local result if prop.image then prop.image = '\n|-\n| style="border-radius:3.5px; background:' .. prop.image_bg .. '" colspan="2" align="center" | ' else prop.image = '' end result = ' ' .. cate('Игры') if gameg 'mt1' or gameg 'mt2' then result = result .. cate('Серия Megami Tensei') elseif gameg 'smt1' or gameg 'smt2' or gameg 'smtif' or gameg 'smt3' or gameg 'smt9' or gameg 'smtim' or gameg 'smtsj' or gameg 'smt4' then result = result .. cate('Серия Shin Megami Tensei') elseif gameg 'lb1' or gameg 'lb2' or gameg 'alb' or gameg 'lb3' or gameg 'lbs' or gameg 'lbnt1' or gameg 'lbnt2' or gameg 'lbnt3' then result = result .. cate('Серия Last Bible') elseif gameg 'majin1' or gameg 'majin2' then result = result .. cate('СерияMajin Tensei') elseif gameg 'smtds' or gameg 'sh' or gameg 'raidou1' or gameg 'raidou2' then result = result .. cate('Серия Devil Summoner') elseif gameg 'p1' or gameg 'p2is' or gameg 'p2ep' or gameg 'p3' or gameg 'pts' or gameg 'p4' or gameg 'pq' or gameg 'p5' then result = result .. cate('Серия Persona') elseif gameg 'childred' or gameg 'childblack' or gameg 'childwhite' or gameg 'childlight' or gameg 'childfire' or gameg 'childice' or gameg 'childmessiah' then result = result .. cate('Серия Devil Children') elseif gameg 'ddsaga1' or gameg 'ddsaga2' then result = result .. cate('Серия Digital Devil Saga') elseif gameg 'desu1' or gameg 'desu2' then result = result .. cate('Серия Devil Survivor') end if gameg 'childred' or gameg 'childblack' then result = result .. cate('Devil Children Red/Black Book','!') elseif gameg 'childmessiah' then result = result .. cate('Messiah Riser','!') elseif gameg '' then elseif gameg then result = result .. cate(gamen,'!') end return result end p.char = makeInvokeFunction('_char') function p._char(args) local prop = get_prop(args) local game = args1 or args.class or args.game or args.Game or '' local gameg if getGames.gamesgame.fallback then gameg = getGames.gamesgame.fallback else gameg = game end local gamen = getGames.gamesgame.name local gamegn = getGames.gamesgameg.name local styleg = '\n|-\n!style="background: ' .. getGames.gamesgameg.colorbg .. ';color: ' .. getGames.gamesgameg.font .. '"' local styleh = styleg .. '|' local stylec = styleg .. ' colspan=2|' local result = ' ' if args.Part 'both' or args.Part 'Both' then if game 'p2is' then result = result .. cate('Персонажи ' .. getGames.games'p2is'.name) .. cate('Персонажи ' .. getGames.games'p2ep'.name) elseif game 'smtds' then result = result .. cate('Персонажи ' .. gamen) .. cate('Персонажи ' .. getGames.games'sh'.name) elseif game 'raidou1' then result = result .. cate('Персонажи ' .. gamen) .. cate('Персонажи ' .. getGames.games'raidou2'.name) elseif game 'desu2' then result = result .. cate('Персонажи ' .. gamen) .. cate('Персонажи ' .. getGames.games'desu2rb'.name) end elseif args.Part 'All' or args.Part 'all' then if game 'p3' then result = result .. cate('Персонажи ' .. gamen) .. cate('Персонажи ' .. getGames.games'p3f'.name) .. cate('Персонажи ' .. getGames.games'p3p'.name) elseif game 'p4' then result = result .. cate('Персонажи ' .. gamen) .. cate('Персонажи ' .. getGames.games'p4g'.name) .. cate('Персонажи ' .. getGames.games'p4a'.name) .. cate('Персонажи ' .. getGames.games'p4d'.name) end elseif gamen ~= nil then result = result .. cate('Персонажи ' .. gamen) end if args.alignment 'Закон' then result = result .. cate('Персонажи мировоззрения «Закон»') elseif args.alignment 'Нейтрал' then result = result .. cate('Персонажи мировоззрения «Нейтрал»') elseif args.alignment 'Хаос' then result = result .. cate('Персонажи мировоззрения «Хаос»') end return result end return p -- --Категория:Модули --!